package com.origin.niuke.面试必刷TOP101;

import general_class.ListNode;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/7/14 10:43
 * 链表中倒数最后k个结点
 * 算法：快慢指针
 * 定义两个指针 -- s, f
 * f 先移动 k 次, 然后 s 再移, 当 f 移到最后时, s 指向的就是倒数第 k 个结点
 */
public class BM8 {

    public ListNode FindKthToTail(ListNode pHead, int k) {
        if (pHead == null || k == 0) return null;
        ListNode s = pHead, f = pHead;
        for (int i = 1; i < k && f != null; i++) f = f.next;
        if (f == null) return null;
        while (f.next != null) {
            s = s.next;
            f = f.next;
        }
        return s;
    }

}
